<?php
/**
 * CK框架 数据库接口
 * 为整个框架提供统一的接口
 * 开发人员开发的数据库类如果没有应用该接口。是不会被proxy2类认可的。
 * @author wujibing<283109896@qq.com>
 * @version   3.0
 * @category   CkFrameWork
 * @package  CkFrameWork
 * @subpackage db
 */
interface IDb_db
{
    /**
     * 查询接口
     * @param string $sql
     * @throws queryFaild_sql_Exception
     * @return array
     */
    public function query($sql,$key='');
    /**
     * 获取查询的数量
     * @param string $sql
     * @throws queryFaild_sql_Exception
     * @return int
     */
    public function count($sql);
    /**
     * 插入数据
     * @param string $sql
     * @return boolean
     * @throws queryFaild_sql_Exception
     */
    public function insert($sql);
    /**
     * 更新数据
     * @param string $sql
     * @return boolean
     * @throws queryFaild_sql_Exception
     */
    public function update($sql);
    /**
     * 删除数据
     * @param string $sql
     * @return boolean
     * @throws queryFaild_sql_Exception
     */
    public function delete($sql);
    /**
     * 返回数据库的类型
     * @return string
     * @throws queryFaild_sql_Exception
     */
    public function getDbType();
    /**
     * 返回上一步 INSERT 操作产生的 ID。
     * @return int
     * @throws queryFaild_sql_Exception
     */
    public function getInsertId();
    /**
     * 返回$tableName表名的字段信息
     * @param string $tableName
     * @return array
     * @throws queryFaild_sql_Exception
     */
    public function getFields($tableName);
    /**
     * 开启事物
     * @return
     */
    public function beginTransaction();
    /**
     * 事物提交
     * @return
     */
    public function commit();
    /**
     * 事物回滚
     * @return
     */
    public function rollBack();
    
}

/**
 * 数据库查询状态
 * @author admin
 *
 */
final class dbQueryType
{
	const query = '查询';
	const insert = '插入';
	const update = '更新';
	const delete = '删除';
}
